package controller

import (
	"aqchain/pkg/config"
	"aqchain/pkg/entity"
	"gorm.io/gorm"
	"reflect"
)

// Controller 控制器
type Controller struct {
	config config.Config
	db     *gorm.DB
}

// New 创建 Controller 对象
func New(cfg config.Config, db *gorm.DB) Controller {
	return Controller{config: cfg, db: db}
}

// ErrorResponse 创建错误响应
func ErrorResponse(err error) entity.Response {
	return entity.Response{
		ErrorMessage: err.Error(),
	}
}

// SuccessResponse 创建成功响应
func SuccessResponse(data interface{}) entity.Response {
	if data != nil {
		switch reflect.TypeOf(data).Kind() {
		// 如果是集合类型数据 获取数据长度
		case reflect.Array, reflect.Slice:
			arr := reflect.ValueOf(data)
			return entity.Response{
				Success: true,
				Data:    data,
				Total:   arr.Len(),
			}
		}
	}
	return entity.Response{
		Success: true,
		Data:    data,
	}
}
